{% load widget_tweaks %}  <!-- 使用前一定记得把这个库加载进来 -->

<!-- 自己写的表单，使用Django Form后可以使用 {{ form.as_p }} 来自动显示，当表单数量很多时这很方便
<div class="form-group">
    <label for="id_subject">Subject</label>
    <input type="text" class="form-control" id="id_subject" name="subject">
</div>
<div class="form-group">
    <label for="id_message">Message</label>
    <textarea class="form-control" id="id_message" name="message" rows="5"></textarea>
</div>
-->
<!-- 除了显示表单，当表单数据有误时会自动显示错误信息，但样式不太好看 -->
<!-- {{ form.as_p }} -->

{% for field in form %}
    <div class="form-group">
        {{ field.label_tag }}

        <!--
            render_field 不属于 Django；它存在于我们安装的包里面。
            要使用它，我们需要传递一个表单域实例作为第一个参数，然后我们可以添加任意的 HTML 属性去补充它
        -->
        {% if form.is_bound %}
            {% if field.errors %}
                {% render_field field class="form-control is-invalid" %}
                {% for error in field.errors %}
                    <div class="invalid-feedback">
                        {{ error }}
                    </div>
                {% endfor %}
            {% else %}
                {% render_field field class="form-control is-valid" %}
            {% endif %}
        {% else %}
            {% render_field field class="form-control" %}
        {% endif %}

        {% if field.help_text %}
            <small class="form-text text-muted">
                {{ field.help_text|safe }}  <!-- safe 为信任特殊字符 -->
            </small>
        {% endif %}
    </div>
{% endfor %}
